#ifndef STUSQL_H
#define STUSQL_H

#include <QObject>
#include <QSqlDatabase>

// 定义学生信息结构体，包含学生的各个属性。
struct StuInfo {
    int id;                     // 学生唯一标识符
    QString sid;                // 学号
    QString sname;              // 学生姓名
    quint8 age;                 // 年龄
    quint16 grade;              // 年级
    quint16 sclass;             // 班级
    QString phone;              // 联系电话
};
class stuSql : public QObject {
    Q_OBJECT

public:
    static stuSql *ptrStuSql;
    static stuSql* getInstance();
    void init();
    quint32 getStuCnt();
    QList<StuInfo> getPageStu(quint32 page, quint32 cnt);
    bool addStu(StuInfo info);
    bool delStu(int id);
    bool clearStu();
    bool updateStu(StuInfo info);
    QVector<StuInfo> searchStu(const QString& condition, bool isSidSearch = false);
    QList<StuInfo> getSortStu(quint32 page, quint32 cnt, const QString& customQuery);
private:
    QSqlDatabase m_db;
    explicit stuSql(QObject *parent = nullptr);
signals:
};

#endif // STUSQL_H
